Hive Tutorial

1 概念

(1) 定位

是一个基于Hadoop的数据仓库基础设施。Hadoop提供海量数据存储和处理能力,以及容错机制。

Hive被设计用来简化数据综合、海量数据临时查询和分析,可以整合SQL和用户自定义函数。

(2) 限制

不适用于在线事务处理。

(3) 数据单位

根据粒度从大到小如下:

1) 数据库

命名空间,用于防止命名冲突,以及分离用户或用户组安全机制。

2) 表

具有相同模式的数据集合。

3) 分区

用于对每张表进行分区,非必需。

用户可根据分区标准选择性地执行查询任务,提高效率。

分区不是数据的一部分,但在数据加载时获取。用户需要自行保证分区标准的严格执行。

4) 桶(或群)

用于高效抽样,非必需。

在每个分区内,基于哈希函数分组的数据。

(5) 类型系统

详见Hive Data Types

1) 基本类型

image-20200613164947863

隐式类型转换:

image-20200613165106885

显式类型转换详见Built In Functions

2) 复杂类型

复杂类型可由基本类型和以下组合方式构成:

  • Structs

    结构中的数据通过句点访问。如STRUCT {a INT; b INT}类型的c中,使用c.a访问a

  • Maps

    映射表使用方括号访问。如映射表M中获取键名为group的值,使用M[‘group’]

  • Arrays

    数据使用方括号访问。如数组A中第二个元素,使用A[1]访问。

3) 时间戳

  • LocalDateTime语义

    类似于Java中LocalDateTime语义,该时间戳不带有时区信息。解析结果与时区无关。

    推荐使用

  • Instant语义

    类似于Java中Instant语义,带有时区信息,解析结果与当前时区有关。

与其他工具比较

SQL 2003 Oracle Sybase Postgres MySQL Microsoft SQL IBM DB2 Presto Snowflake Hive >= 3.1 Iceberg Spark
timestamp Local Local Local Local Instant Other Local Local Local Local Local Instant
timestamp with local time zone Instant Instant Instant
timestamp with time zone Offset Offset Offset Instant Offset Offset Offset Instant
timestamp without time zone Local Local Local Local

Other definitions:

Offset = Recording a point in time as well as the time zone offset in the writer’s time zone.

(6) 内部操作符合函数

cast(‘1’ as BIGINT),将字符’1‘转换为BIGINT型,失败则返回null

详见文档

(7) 语言能力

支持基本的SQL操作

2 示例

注意:内容可能过时,最新内容详见LanguageManual

参考资料

Hive Tutorial

LanguageManual